name = "neo"
a, b, c = 1 , 2, "lt1"
g = h = m = 1
# print(a)

# 常量
BI = 3.14

# print(type(c))

# Number（数字）、String（字符串）、List（列表）、Tuple（元组）、Sets（集合）、Dictionary（字典）

# print (5 + 4)  # 加法   输出 9
# print (4.3 - 2) # 减法   输出 2.3
# print (3 * 7)  # 乘法  输出 21
# print (2 / 4)  # 除法，得到一个浮点数    输出 0.5
# print (2 // 4) # 除法，得到一个整数 输出 0
# print (17 % 3) # 取余   输出 2
# print (2 ** 5) # 乘方  输出 32

s = '优雅的Python'
# 切片 s[0], s[-1], s[3:], s[::-1]	# '学', 'n', 'Python', 'nohtyP的雅优'
# section = s[::-1]
# print(section)

# 替换，还可以使用正则表达式替换 s.replace('Python', 'Java')
# 查找 find()、index()、rfind()、rindex()
# index = s.find('P')			# 3, 返回第一次出现的子串的下标
# index = s.find('h', 2)			# 6, 设定下标2开始查找
# index = s.find('23333')			# -1, 查找不到返回-1
# index = s.index('y')			# 4, 返回第一次出现的子串的下标
# index = s.index('P')		# 不同与find(), 查找不到会抛出异常
# print(index)
# 转大小写, upper()、lower()、swapcase()、capitalize()、istitle()、isupper()、islower()
# s.upper()			# '学习PYTHON'
# s.swapcase()			# '学习pYTHON', 大小写互换
# s.istitle()			# True
# s.islower()			# False
# 去空格,strip() 左右 、lstrip()左、rstrip()右
# 字符串格式化
# s1 = '%s %s' % ('Windrivder', 21)	# 'Windrivder 21'
# s2 = '{}, {}'.format(21, 'Windridver')	# 推荐使用format格式化字符串
# s3 = '{0}, {1}, {0}'.format('Windrivder', 21)
# s4 = '{name}: {age}'.format(age=21, name='Windrivder')
# 连接与分割，使用 + 连接字符串，每次操作会重新计算、开辟、释放内存，效率很低，所以推荐使用join
# l = ['2017', '03', '29', '22:00']
# s5 = '-'.join(l)			# '2017-03-29-22:00'
# s6 = s5.split('-')			# ['2017', '03', '29', '22:00']

# 所有的pytho字符串都是Unicode字符
# encode 将字符转换为字节
# str = '学习Python'
# print (str.encode())			# 默认编码是 UTF-8  输出：b'\xe5\xad\xa6\xe4\xb9\xa0Python'
# print (str.encode('gbk'))      # 输出  b'\xd1\xa7\xcf\xb0Python'
# # decode 将字节转换为字符
# print (str.encode().decode('utf8'))   # 输出 '学习Python'
# print (str.encode('gbk').decode('gbk'))             # 输出 '学习Python'

# List 列表
'''
列表是写在方括号 [] 之间、用逗号分隔开的元素列表，
列表可以完成大多数集合类的数据结构实现。
列表中元素的类型可以不相同，它支持数字，字符串甚至可以包含列表（所谓嵌套），列表中的元素是可以改变。
'''
# Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']
# print(Weekday[0])   # 输出 Monday
#
# #list 搜索
# print(Weekday.index("Wednesday"))
#
# #list 增加元素
# Weekday.append("new")
# print(Weekday)
#
# # list 删除
# Weekday.remove("Thursday")
# print(Weekday)

# Tuple（元组）
'''
元组（tuple）与列表类似，不同之处在于元组的元素不能修改。
元组写在小括号 () 里，元素之间用逗号隔开，组中的元素类型也可以不相同。
'''
# letters = ('a','b','c','d','e','f','g')
# print(letters[0])  # 输出 'a'
# print(letters[0:3])  # 输出一组 ('a', 'b', 'c')

# Sets（集合）
'''
集合（set）是一个无序不重复元素的序列，使用大括号 {} 或者 set() 函数创建集合，注意：创建一个空集合必须用 set() 而不是 {} ，因为 {} 是用来创建一个空字典。
集合不能被切片也不能被索引，除了做集合运算之外，集合元素可以被添加还有删除：
'''
# a_set = {1,2,3,4}
# # 添加
# a_set.add(5)
# print(a_set)  # 输出{1, 2, 3, 4, 5}
# # 删除
# a_set.discard(5)
# print(a_set)  # 输出{1, 2, 3, 4}

# Dictionary（字典）
'''
字典是一种映射类型，它的元素是键值对，字典的关键字必须为不可变类型，且不能重复。创建空字典使用 {} 。
'''
Logo_code = {
 'BIDU':'Baidu',
 'SINA':'Sina',
 'YOKU':'Youku'
 }
print(Logo_code)
# 输出{'BIDU': 'Baidu', 'YOKU': 'Youku', 'SINA': 'Sina'}
print (Logo_code['SINA'])       # 输出键为 'one' 的值
print (Logo_code.keys())   # 输出所有键
print (Logo_code.values()) # 输出所有值
print (len(Logo_code))  # 输出字段长度